package com.code.springboot3.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.code.springboot3.model.dto.RoleAssignDTO;
import com.code.springboot3.model.dto.UpdatePwdDto;
import com.code.springboot3.model.dto.UserFromDto;
import com.code.springboot3.model.dto.UserUpdateInfoDto;
import com.code.springboot3.model.entity.BigUser;
import com.code.springboot3.model.vo.UserVo;

import java.util.List;

public interface BigUserService extends IService<BigUser> {

    UserVo getUserInfo(String token);

    /**
     * 根据用户名/账号查询用户
     * @param username 用户名/账号
     * @return 返回用户信息
     */
    BigUser findByUsername(String username);

    /**
     * 注册接口
     * @param userFromDto 注册登录请求DTO
     * @return 返回用户信息
     */
    UserVo register(UserFromDto userFromDto);

    /**
     * 根据ID查询用户
     * @param id 用户id
     * @return 返回用户信息
     */
    BigUser getUserById(int id);

    /**
     * 登录接口
     * @param userFromDto 注册登录请求DTO
     * @return 返回用户信息
     */
    String login(UserFromDto userFromDto);

    /**
     * 用户信息脱敏
     * @param user 用户实体类
     * @return
     */
    UserVo userInformationDesensitization(BigUser user);

    /**
     * 用户信息修改
     * @param token 用户令牌
     * @return
     */
    int updateUserInfo(UserUpdateInfoDto userUpdateInfoDto, String token);

    /**
     * 更新用户头像
     * @param avatarUrl 头像URL
     * @param token 用户令牌
     * @return 返回0/1
     */
    int updateAvatar(String avatarUrl, String token);

    /**
     * 用户修改密码
     * @param updatePwdDto 修改密码请求体
     * @param token 用户令牌
     * @return 返回0/1
     */
    int updatePwd(UpdatePwdDto updatePwdDto, String token);
    void assignRole(RoleAssignDTO dto);

    /**
     * 获取到UserVo的list列表
     * @return 返回UserVo的list列表
     */
    List<UserVo> getUserList();
}
